package Other;

//581. 最短无序连续子数组
public class FindUnsortedSubarray {
    
}


/×
    如果当前元素后面有比他还小的元素（直接通过记录每个元素后面的最小元素），则该元素一定在需要排序的序列中
    第一个这样的元素一定是序列的开始
    同理，如果一个元素前面有比他还大的元素，那么这个元素一定是序列中的
×/
/×
    可以改进为边找最大最小值的时候边找边界
×/

// class Solution {
//     public int findUnsortedSubarray(int[] nums) {
//         int len = nums.length;
//         int[] min = new int[len];
//         int[] max = new int[len];
//         min[len-1]=Integer.MAX_VALUE;
//         for (int i = len-2; i >=0; i--) {
//             if(nums[i+1]<min[i+1]) min[i]=nums[i+1];
//             else min[i]=min[i+1];
//         }
//         max[0]=Integer.MIN_VALUE;
//         for (int i = 1; i < len; i++) {
//             if(nums[i-1]>max[i-1])max[i]=nums[i-1];
//             else max[i]=max[i-1];
//         }

//         int start =-1;
//         int end =-1;
//         for (int i = 0; i < len; i++) {
//             if(nums[i]>min[i]){
//                 start=i;
//                 break;
//             }
//         }
//         for (int i = len-1; i >=0 ; i--) {
//             if(nums[i]<max[i]){
//                 end=i;
//                 break;
//             }
//         }
//         return start==-1?0:end-start+1; //==-1时是一个元素的时候
//     }
// }